unit PesquisaClientes;

interface
  
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFormPesquisa, DB, DBTables, StdCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, Mask, DBCtrls;

type
  TFPesquisaCliente = class(TFormPesquisa)
    RGTipoCliente: TRadioGroup;
    Label9: TLabel;
    MECpfCNPJ: TMaskEdit;
    Label1: TLabel;
    Label2: TLabel;
    ENome: TEdit;
    EFantasia: TEdit;
    ECodigo: TEdit;
    Label3: TLabel;
    RGSituacao: TRadioGroup;
    dsGrupos: TDataSource;
    Label19: TLabel;
    dblGrupos: TDBLookupComboBox;
    procedure RGTipoClienteClick(Sender: TObject);
    procedure BtnConsultarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BtnImprimirClick(Sender: TObject);
    procedure BtnSelecionarClick(Sender: TObject);
    procedure BtnLimparClick(Sender: TObject);
    procedure ECodigoKeyPress(Sender: TObject; var Key: Char);
    procedure dblGruposKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
   Tela :String; 
  end;

var
  FPesquisaCliente: TFPesquisaCliente;

implementation

uses CadastroClientes, RelatorioClientes, UFormRelatorio, ContasReceber,
  UGeral, CobrancaProgramada, PagamentoProgramado, UDmGestao;

{$R *.dfm}

procedure TFPesquisaCliente.RGTipoClienteClick(Sender: TObject);
begin
  inherited;
 case RGTipoCliente.ItemIndex of
  1 :  Begin
        Label9.Caption:='CPF';
        MECpfCNPJ.EditMask:=CPF;
        MECpfCNPJ.Width:=110;
       end;
  2 :  begin
        Label9.Caption:='CNPJ';
        MECpfCNPJ.EditMask:=CNPJ;
        MECpfCNPJ.Width:=112;
       end;
  3 :  begin
        Label9.Caption:='Outros';
        MECpfCNPJ.EditMask:='';
        MECpfCNPJ.Width:=112;
        MECpfCNPJ.MaxLength:=20;
       end;

 end;
 MECpfCNPJ.Text:='';
end;

procedure TFPesquisaCliente.BtnConsultarClick(Sender: TObject);
begin
  if (Tela = 'CRCLIENTE') or (Tela = 'CADASTROCLIENTE') then
  begin
    QPesquisa.close;
    QPesquisa.SQL.Clear;
    QPesquisa.SQL.Add('Select * from Cliente ');
    QPesquisa.SQL.Add('Where (1 = 1)');

    if ECodigo.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Cli_Codigo = :Cod)');
      QPesquisa.ParamByName('Cod').AsString:=ECodigo.Text;
    end;

    if ENome.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Cli_Razao Like :Raz)');
      QPesquisa.ParamByName('Raz').AsString:='%' + ENome.Text +'%' ;
    end;

    if EFantasia.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Cli_Fantasia Like :Fant)');
      QPesquisa.ParamByName('Fant').AsString:='%' + EFantasia.Text +'%' ;
    end;

    if MECpfCNPJ.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Cli_CpFCNPJ = :Cpf)');
      QPesquisa.ParamByName('Cpf').AsString:=MECpfCNPJ.Text;
    end;

    case RGSituacao.ItemIndex of
      1:QPesquisa.SQL.Add(' And (Cli_Situacao = 0)');
      2:QPesquisa.SQL.Add(' And (Cli_Situacao = 1)');
    end;

    case RGTipoCliente.ItemIndex of
      1:QPesquisa.SQL.Add(' And (CLI_TIPOCLIENTE = 0)');
      2:QPesquisa.SQL.Add(' And (CLI_TIPOCLIENTE = 1)');
      3:QPesquisa.SQL.Add(' And (CLI_TIPOCLIENTE = 2)');
    end;

    if dblGrupos.KeyValue <> null then
      QPesquisa.SQL.Add(' And (CLI_FK_GRUPO = ' + VarToStr(dblGrupos.KeyValue) + ')');

    QPesquisa.SQL.Add('order by CLI_RAZAO');
    QPesquisa.Open;

  end;

  If Tela = 'CRFORNECEDOR' then
  begin
    QPesquisa.close;
    QPesquisa.SQL.Clear;
    QPesquisa.SQL.Add('Select * from Fornecedor ');
    QPesquisa.SQL.Add('Where (1 = 1)');
    if ECodigo.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Forn_Codigo = :Cod)');
      QPesquisa.ParamByName('Cod').AsString:=ECodigo.Text;
    end;

    if ENome.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Forn_Razao Like :Raz)');
      QPesquisa.ParamByName('Raz').AsString:='%' + ENome.Text +'%' ;
    end;

    if EFantasia.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Forn_Fantasia Like :Fant)');
      QPesquisa.ParamByName('Fant').AsString:='%' + EFantasia.Text +'%' ;
    end;

    if MECpfCNPJ.Text <> '' then
    begin
      QPesquisa.SQL.Add(' And (Forn_CpFCNPJ = :Cpf)');
      QPesquisa.ParamByName('Cpf').AsString:=MECpfCNPJ.Text;
    end;

    case RGTipoCliente.ItemIndex of
      1:QPesquisa.SQL.Add(' And (Forn_TipoFornecedor = 0)');
      2:QPesquisa.SQL.Add(' And (Forn_TipoFornecedor = 1)');
      3:QPesquisa.SQL.Add(' And (Forn_TipoFornecedor = 2)');
    end;

    if dblGrupos.KeyValue <> null then
      QPesquisa.SQL.Add(' And (CLI_FK_GRUPO = ' + VarToStr(dblGrupos.KeyValue) + ')');

    QPesquisa.Open;
  end;
  inherited;

end;

procedure TFPesquisaCliente.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 if tela = 'CADASTROCLIENTE' then
  begin
   FCadastroClientes.Enabled:=true;
   FCadastroClientes.Show;
  end
 else
  if tela = 'CRCLIENTE' then
   begin
//    FContasReceber.Enabled:=true;
//    FContasReceber.Show;
   end;
 FPesquisaCliente:=nil;
 inherited;
end;

procedure TFPesquisaCliente.BtnImprimirClick(Sender: TObject);
begin
  inherited;
 DSPesquisa.Enabled:=false;
 Application.CreateForm(TFRelatorioClientes, FRelatorioClientes);
  with FRelatorioClientes do
  begin
   QRLNomeRelatorio.Caption:='CLIENTES';
   QuickRep1.DataSet:=QPesquisa;
   QuickRep1.Prepare;
   QuickRep1.Preview;
   close;
  end;
 DSPesquisa.Enabled:=true;
end;

procedure TFPesquisaCliente.BtnSelecionarClick(Sender: TObject);
begin
  inherited;
  if tela = 'CADASTROCLIENTE' then
  begin
   FCadastroClientes.dsCadastro.DataSet.Close;
   FCadastroClientes.dsCadastro.DataSet.Open;
   FCadastroClientes.dsCadastro.DataSet.Locate('Cli_Codigo',QPesquisa.fieldByname('Cli_Codigo').AsString,[loCaseInsensitive]);
   FCadastroClientes.filtra;
  end
 else
  if tela = 'CRCLIENTE' then
// FContasReceber.QContasReceber.FieldByName('CR_CLIENTE').AsInteger:=QPesquisa.fieldByname('Cli_Codigo').AsInteger;
 fcobrancaprogramada.QCobrancaprogramada.FieldByName('CLIENTE').AsInteger:=QPesquisa.fieldByname('Cli_Codigo').AsInteger;

 if tela = 'CRFORNECEDOR' then
   FPagamentoProgramado.cdsCadastro.FieldByName('fornecedor').AsInteger:=QPesquisa.fieldByname('Forn_Codigo').AsInteger;

 Self.Close;
end;

procedure TFPesquisaCliente.BtnLimparClick(Sender: TObject);
begin
  inherited;
  ECodigo.Text:='';
  ENome.Text:='';
  EFantasia.Text:='';
  MECpfCNPJ.Text:='';
  RGTipoCliente.ItemIndex:=2;
  dblGrupos.KeyValue := null;
end;

procedure TFPesquisaCliente.ECodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
 if not(key in ['0'..'9',#8]) then
  key:=#0;
end;

procedure TFPesquisaCliente.dblGruposKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if key = vk_delete then
    TDBLookupComboBox(sender).KeyValue := null;
end;

end.
